package com.itheima.reggie.common;

import lombok.Data;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 通用返回结果,将服务端响应给客户端的所有信息都进行包装,然后返回
 * @param <T>
 */
@Data
public class R<T> implements Serializable { // 泛型类
    private Integer code;   // 编码: 1表示成功,0表示失败
    private String msg;     // 错误信息
    private T data;         // 数据
    private Map map = new HashMap();    // 动态数据

    // 业务运行成功
    public static <T> R<T> success(T object){   // 泛型方法; 格式:修饰符 <类型> 返回值 方法名(类型 变量名){}
        R<T> r = new R<>();
        r.data = object;
        r.code = 1;
        return r;
    }

    // 业务运行失败
    public static <T> R<T> error(String msg){
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }
}